home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group95b.txt / 000000_icon-group-request _Mon Feb 6 12:47:47 1995.msg next >
Internet Message Format  |  1995-09-18  |  19KB

  1. Received: from optima.CS.Arizona.EDU by cheltenham.CS.Arizona.EDU; Mon, 6 Feb 1995 13:19:49 MST
  2. Received: from agate.Berkeley.EDU by optima.cs.arizona.edu (5.65c/15) via SMTP
  3.     id AA27423; Mon, 6 Feb 1995 13:19:43 MST
  4. Received: by agate.berkeley.edu (8.6.8.1/1.33)
  5.     id LAA04908; Mon, 6 Feb 1995 11:58:23 -0800
  6. Received: from GATEWAY by agate with netnews
  7.     for icon-group@cs.arizona.edu (icon-group-l@cs.arizona.edu)
  8. To: icon-group-l@cs.arizona.edu
  9. Date: 6 Feb 1995 12:47:47 -0700
  10. From: icon-project@cs.arizona.edu
  11. Message-Id: <3h5ud3$p63@optima.cs.arizona.edu>
  12. Organization: University of Arizona CS Department, Tucson AZ
  13. Sender: icon-group-request@cs.arizona.edu
  14. Reply-To: icon-project@cs.arizona.edu
  15. Subject: Icon Programming Language FAQ
  16.  
  17. Archive-name: comp-lang-icon-faq
  18. Posting-Frequency: monthly
  19.  
  20.  
  21.     Frequently Asked Questions About The Icon Programming Language
  22.  
  23. last updated: 01/18/95
  24.  
  25. This FAQ answers various questions about the Icon programming language,
  26. ranging from what it is to how you can get it.  This first version of the
  27. Icon FAQ is devoted to the issues that are likely to be of most interest
  28. to persons who don't know anything about Icon or who are relatively
  29. new to it.  Future versions of this FAQ will answer questions from
  30. more experienced Icon programmers.
  31.  
  32. This FAQ is written by Ralph Griswold with help from Cliff Hathaway,
  33. Clint Jeffery, and Gregg Townsend.
  34.  
  35. Section I -- General Questions:
  36.  
  37. I.1.   What is Icon?
  38. I.2.   What is Icon good for?
  39. I.3.   Where did Icon come from?
  40. I.4.   What does "Icon" stand for?
  41. I.5.   On what computers does Icon run?
  42. I.6.   Who did all these implementations?
  43. I.7.   Are there other implementations in the works?
  44. I.8.   Are there different versions of Icon?
  45. I.9.   Which implementations of Icon have graphics/window capabilities?
  46. I.10.  Where can I get Icon?
  47. I.11.  Where can I get documentation about Icon?
  48. I.12.  How do I get started with Icon?
  49. I.13.  What is the Icon Project?
  50. I.14.  Where can I find examples of Icon programs?
  51. I.15.  What is Idol?
  52. I.16.  How often is material in Icon's FTP area updated?
  53. I.17.  How do I stay up to date with what's going on with Icon?
  54. I.18.  Why isn't the Icon Newsletter available electronically?
  55. I.19.  Is there a users' group for Icon?
  56. I.20.  How do I get technical support?
  57. I.21.  Is there an optimizing compiler for Icon?
  58. I.22.  What do I need to run the interpreter?
  59. I.23.  What do I need to run the compiler?
  60. I.24.  Can I build my own implementation of Icon for a new platform?
  61.  
  62. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  63.  
  64. I.1.   What is Icon?
  65.  
  66. Icon is a very high level general-purpose programming language with
  67. extensive features for processing strings (text) and data structures.
  68. Icon is an imperative, procedural language with a syntax that is
  69. reminiscent of C and Pascal, but its semantics are at a much higher level
  70. than those languages.
  71.  
  72. Icon has a novel expression-evaluation mechanism that integrates goal-
  73. directed evaluation and backtracking with conventional control structures.
  74. It has a string scanning facility for pattern matching that avoids 
  75. the tedious details usually associated with analyzing strings. Icon's
  76. built-in data structures include sets and tables with associative lookup,
  77. lists that can be used as vectors or stacks and queues, and records.
  78.  
  79. Icon is a strongly, though not statically, typed language. It provides
  80. transparent automatic type conversion. For example, if an integer is
  81. used in an operation that requires a string, the integer is automatically
  82. converted to a string.
  83.  
  84. Several implementations of Icon have high-level graphics facilities with
  85. an easily programmed window interface.
  86.  
  87. Icon manages storage automatically. Objects are created as needed during
  88. program execution and space is reclaimed by garbage collection as needed.
  89. The sizes of strings and data structures are limited only by the amount
  90. of available memory.
  91.  
  92.  
  93. I.2.   What is Icon good for?
  94.  
  95. As a general-purpose programming language with a large computational
  96. repertoire, Icon can be used for most programming tasks.  It's at
  97. its best when used as a prototyping tool, for processing text, and when
  98. ease of programming is needed for experimental and research applications.
  99.  
  100. Paradoxically, Icon is used most often for short, one-shot tasks and for very
  101. complex applications.
  102.  
  103. Icon is designed to make programming easy; it emphasizes the value of
  104. programmer's time and the importance of getting programs to work quickly.
  105. This explains its usefulness for prototyping as well as the apparent
  106. paradox of applicability to simple and complex applications.
  107.  
  108.  
  109. I.3.   Where did Icon come from?
  110.  
  111. Icon is the latest in a series of high-level programming languages designed
  112. to facilitate programming tasks involving strings and structures. The
  113. original language, SNOBOL, was developed at Bell Telephone Laboratories
  114. in the early 60s.  SNOBOL evolved into SNOBOL4, which is still in use.
  115. Subsequent languages were developed at The University of Arizona with
  116. support from the National Science Foundation.
  117.  
  118. Incidentally, Icon bears little physical resemblance to SNOBOL4, although
  119. it has similar objectives and many similar capabilities.
  120.  
  121.  
  122. I.4.   What does "Icon" stand for?
  123.  
  124. The name Icon (which is not spelled ICON) is not an acronym nor does it
  125. stand for anything in particular, although the word iconoclastic was
  126. mentioned at the time the name was chosen.  The name predates the now
  127. common use of "icon" to refer to small images used in graphical user
  128. interfaces.  This latter usage sometimes causes persons to think mistakenly
  129. that Icon is designed to create or manipulate icons.  There's not much
  130. that can be done about this.
  131.  
  132.  
  133. I.5.   On what computers does Icon run?
  134.  
  135. The implementation of Icon is highly portable. There are versions for
  136. the Acorn Archimedes, the Amiga, the Atari ST, IBM CMS and MVS, the
  137. Macintosh, MS-DOS, OS/2, UNIX, and VMS.  Nearly 60 UNIX platforms are
  138. supported.
  139.  
  140. Icon programs also are highly portable. Most Icon programs can run on
  141. any platform that supports Icon.
  142.  
  143.  
  144. I.6.   Who did all these implementations?
  145.  
  146. The original implementation of Icon for UNIX was done at The University
  147. of Arizona.  Most of the other implementations originally were done
  148. by volunteers scattered around the world.
  149.  
  150. It's worth noting that all implementations of Icon are based on the same
  151. source code, which is written in C.  This contributes to the portability 
  152. of Icon itself, as well as to the portability of programs written in Icon.
  153.  
  154.  
  155. I.7.   Are there other implementations in the works?
  156.  
  157. Yes, work is constantly underway on implementations of Icon for new
  158. platforms.  Present projects include Windows NT, Win32, and a new
  159. Macintosh implementation.
  160.  
  161.  
  162. I.8.   Are there different versions of Icon?
  163.  
  164. Icon has evolved through a series of versions with improved and extended
  165. capabilities.  The latest major version number is 9.  This version
  166. includes recent changes and additions, notably in the graphics area.
  167. As of this writing, the MS-DOS, UNIX, and VMS implementations are
  168. are up to 9.0.  Other implementations that presently are at Version
  169. 8.10 are being converted to 9.0.  There are a few platforms still at 8.0.
  170. Almost all programs that run under 8.0 or 8.10 and that do not use graphics
  171. will run under 9.0.  Programs that use graphics require conversion
  172. to 9.0.  The 9.0 release provides conversion aids.
  173.  
  174.  
  175. I.9.   Which implementations of Icon have graphics/window capabilities?
  176.  
  177. Icon's graphics facilities presently are supported on the OS/2, UNIX, and
  178. VMS implementations.  The UNIX and VMS implementations use X, while the
  179. OS/2 implementation uses Presentation Manager.
  180.  
  181. The NT and Win32 implementations that are in progress will support Icon's
  182. graphics facilities.  A Macintosh implementation to support graphics also
  183. is in the works.
  184.  
  185.  
  186. I.10.  Where can I get Icon?
  187.  
  188. Most implementations of Icon are available via anonymous FTP to
  189. cs.arizona.edu in /icon.  The directory /icon/binaries contains executable
  190. versions of Icon for several systems, including several popular UNIX
  191. platforms.  The directory /icon/packages contains source code, test programs,
  192. related material, and, most cases, executable binaries as well.
  193. All directories have READ.ME files with additional information.
  194.  
  195. Icon also is available on a variety of physical media for prices ranging
  196. from $15 to $50.  Contact:
  197.  
  198.     Icon Project
  199.     Department of Computer Science
  200.     The University of Arizona
  201.     Tucson, AZ   85721
  202.  
  203.     602-621-6613 (voice)
  204.     602-621-4246 (fax)
  205.  
  206.     icon-orders@cs.arizona.edu (e-mail)
  207.  
  208. Request a copy of the Icon Newsletter for a listing of what's available
  209. and what the prices are.
  210.  
  211. Purchases can be made by credit card (MasterCard, Visa, or Discover) or
  212. by check drawn on a bank with a branch in the United States and made
  213. payable to The University of Arizona.
  214.  
  215.  
  216. I.11.  Where can I get documentation about Icon?
  217.  
  218. The definitive work on Icon is the book
  219.  
  220.     The Icon Programming Language, Griswold and Griswold,
  221.     Prentice-Hall, 1990, 368 pages, ISBN 0-13-447889-4.
  222.  
  223. This book is a complete description and reference manual for Version 8 of
  224. Icon.
  225.  
  226. There also is a book on the implementation of Icon:
  227.  
  228.     The Implementation of the Icon Programming Language, Griswold
  229.     and Griswold, Princeton University Press, 1986, 336 pages, ISBN
  230.     0-691-08431-9.
  231.  
  232. This book describes the implementation as of Version 6 of Icon.  Although
  233. the implementation has changed somewhat since then, the basic structure
  234. is the same.  Technical reports describing recent implementation changes
  235. are included with books purchased from the Icon Project.
  236.  
  237. These books are available from the Icon Project or from any book store
  238. that handles special orders.
  239.  
  240. Additional documentation is available via FTP in /icon/doc.  Notable
  241. documents are:
  242.  
  243.     TR 90-6      an overview of Icon
  244.     IPD255      graphics/window facilities
  245.     IPD236      changes between Versions 8.0 and 9.0
  246.  
  247. There are manual pages for UNIX systems, but there is no complete
  248. on-line documentation.  
  249.     
  250. The Icon Newsletter, which includes topical material about Icon and
  251. a list of material available from the Icon Project, is published three
  252. times a year.  Subscriptions are free; contact the Icon Project to get
  253. a copy of the latest Newsletter and to be put on the mailing list.
  254.  
  255. The Icon Analyst, a technically oriented newsletter that features articles
  256. about programming, is published six times a year.  There is a subscription
  257. fee for the Analyst.  A sample copy is available on request.
  258.  
  259. All back issues of both newsletters are available for purchase.
  260.  
  261.  
  262. I.12.  How do I get started with Icon?
  263.  
  264. If you're a newcomer to Icon, get the package for your platform (by
  265. FTP, cd /icon/packages and get READ.ME for more information).  This
  266. will give you documentation concerning running Icon on your platform,
  267. test programs and other material.  If the package you pick up does
  268. not contain executable files, see /icon/binaries.  You also may want
  269. to get the overview of Icon:  /icon/doc/tr90-6.doc or tr90-6.ps.Z.
  270. You'll find pointers to other documents of interest in the package
  271. you pick up.
  272.  
  273. I.13.  What is the Icon Project?
  274.  
  275. The Icon Project is a name used by the group at The University of
  276. Arizona that develops, implements, distributes, and supports the
  277. Icon programming language.
  278.  
  279. The Icon Project is not commercial organization.  It derives support
  280. from The University of Arizona, grants, and (primarily) revenue from
  281. the sale of program material and documentation.
  282.  
  283.  
  284. I.14.  Where can I find examples of Icon programs?
  285.  
  286. There is a large program library for Icon.  It is an excellent resource
  287. for both new and experienced programmers, containing numerous examples of
  288. how to do things with Icon.  The library also provides many useful
  289. applications, as well as hundreds of procedures that supplement Icon's
  290. built-in repertoire.
  291.  
  292. The library, like other Icon material, is available via FTP (cd /icon/library)
  293. and on physical media from the Icon Project.
  294.  
  295.  
  296. I.15.  What is Idol?
  297.  
  298. Idol is an object-oriented extension to Icon that provides concepts such
  299. as classes and multiple inheritance.  Idol is written in Idol and is
  300. distributed as part of the Icon program library.  Idol runs on almost all
  301. of the platforms that Icon runs on.
  302.  
  303. Additional Idol information is available from Clint Jeffery,
  304. jeffery@ringer.cs.utsa.edu.
  305.  
  306.  
  307. I.16.  How often is material in Icon's FTP area updated?
  308.  
  309. New material is added when it's available.  Established implementations
  310. usually are only updated when there's a major new release.  This typically
  311. is every year or two.  The Icon program library is updated on a similar
  312. schedule.
  313.  
  314.  
  315. I.17.  How do I stay up to date with what's going on with Icon?
  316.  
  317. The best way to find out about developments related to Icon is to
  318. subscribe to the Icon Newsletter.  It's free, but it is distributed
  319. only by postal mail, so you must provide a mailing address.
  320.  
  321. You can stay up to date on the source code, which is changed much more
  322. frequently than the version on FTP is updated, by subscribing to the
  323. source update service, which provides a new version about three times
  324. a year.
  325.  
  326. There also is a subscription service for updates to the Icon program
  327. library, which provides new material three or four times a year.
  328.  
  329. See the Icon Newsletter for information about subscribing to these
  330. services.
  331.  
  332.  
  333. I.18.  Why isn't the Icon Newsletter available electronically?
  334.  
  335. The Icon Newsletter contains diagrams, images, and other material that
  336. cannot be rendered in plain ASCII text.  The Newsletter is prepared with
  337. a desktop publishing system that produces PostScript, but the files are
  338. enormous -- too large to include in the Icon FTP area.  Selected articles
  339. from the Newsletter are available by FTP in /icon/doc/articles.
  340.  
  341.  
  342. I.19.  Is there a users' group for Icon?
  343.  
  344. There is no official Icon users' group.  The Icon Project maintains an
  345. electronic mailing list, icon-group@cs.arizona.edu.  Mail sent to this address
  346. is forwarded to subscribers.  To subscribe (or unsubscribe), send a
  347. message to icon-group-request@cs.arizona.edu.
  348.  
  349. There is a gateway between icon-group and comp.lang.icon, an unmoderated
  350. newsgroup for discussing issues related to Icon.  The gateway, which
  351. exchanges messages between the two systems, is imperfect and not under
  352. the control of the Icon Project.
  353.  
  354. The newsgroup generally provides faster response than the mailing list.
  355. The newsgroup is less intrusive, but it sometimes suffers from inappropriate
  356. postings.  The Icon Project usually sends messages of interest to the
  357. Icon community to icon-group.
  358.  
  359. I.20.  How do I get technical support?
  360.  
  361. Free technical support is available from the Icon Project via electronic
  362. mail to icon-project@cs.arizona.edu or by fax, telephone, and postal mail
  363. to the Icon Project as listed above.
  364.  
  365. Since the Icon Project is not a commercial organization, support is limited
  366. to what it can provide with its available resources.  If the Icon Project
  367. cannot help with a problem (such as for a platform it doesn't have), it will
  368. attempt to provide a contact with someone who can help.
  369.  
  370.  
  371. I.21.  Is there an optimizing compiler for Icon?
  372.  
  373. Yes.  The original implementation was an interpreter.  An optimizing
  374. compiler was added a few years ago.  The interpreter and compiler are
  375. largely source-language compatible.
  376.  
  377. The interpreter is used by most Icon programmers because it gets into
  378. execution quickly and runs fast enough for most applications.  The compiler
  379. is best suited for applications that require the fastest possible
  380. execution time.  In this case, it's generally best to develop the program
  381. using the interpreter and then compile the final result for production use.
  382.  
  383.  
  384. I.22.  What do I need to run the interpreter?
  385.  
  386. The Icon interpreter will run on most computers.  It requires a reasonable
  387. amount of memory, however.   Under MS-DOS, the Icon interpreter needs
  388. 500KB of application RAM to work well.
  389.  
  390.  
  391. I.23.  What do I need to run the compiler?
  392.  
  393. The Icon compiler is another matter.  It requires a C compiler, a fast
  394. CPU for tolerable compilation times, a considerable amount of disk
  395. space, and a lot of memory -- at least several megabytes.
  396.  
  397. The Icon compiler generates C code, which must then be compiled to
  398. produce an executable program.  The flexibility that Icon provides to
  399. programmers makes compilation technically difficult and the process
  400. requires a large amount of memory.  The C code it produces is voluminous
  401. and stresses the most robust C compilers.
  402.  
  403. Generally speaking, the Icon compiler is practical for platforms in
  404. the workstation class but not for most personal computers.  Although
  405. the compiler can be built and made to run on 286 platforms running
  406. standard MS-DOS, only trivially small programs can be compiled.  In
  407. principle, the Icon compiler is practical on MS-DOS 386/486 platforms
  408. with extended memory, but the limited availability of suitable 32-bit C
  409. compilers for this environment has discouraged the use of the Icon compiler
  410. on such platforms.
  411.  
  412.  
  413. I.24.  Can I build my own implementation of Icon for a new platform?
  414.  
  415. As mentioned above, Icon is written in C and the source code is available
  416. via FTP and the Icon Project.  The existing implementations are testament
  417. to its portability.  (a small amount of assembly-language code is
  418. required for a context switch, but this is only needed for an optional
  419. feature -- co-expressions -- that can be disabled without affecting most
  420. of Icon.)
  421.  
  422. New ports involve platform-specific configuration parameters and, in
  423. some cases, platform-specific code.  The feasibility of a new port and
  424. the amount of work it may take depends on the platform -- its architecture,
  425. its C compiler, and its environment.
  426.  
  427. Ports to new UNIX platforms generally are easy, although novel architecture
  428. may present problems.  Ports to new operating systems generally are
  429. more difficult, especially if Icon's graphics facilities are implemented.
  430.  
  431. The Icon Project provides what help it can with new ports.  In return, it
  432. asks that code related to the port to be returned to the Icon Project for
  433. inclusion in future versions of the source code for Icon.  This makes the
  434. new port available to others as well as to the porter when Icon is updated.